{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# User's Guide, Chapter 16: TinyNotation"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "So far in this User's Guide, we've been loading music into `music21` either with one of the `corpus.parse` or `converter.parse` methods, which is great if you already have a piece of music in the corpus or in a file somewhere, or by building up a score note by note using the `stream.Stream()` and `note.Note()` objects.\n",
    "\n",
    "But suppose that you want to get some music into `music21` that is too long to use the `note.Note()` build up, but too short to be worth firing up your notation editor to make a file? As you might imagine, this was a problem that the `music21` design team encountered often during the early development stages of the system, and we created our own solution with a format called \"TinyNotation\".\n",
    "\n",
    "As its name implies, TinyNotation is designed to be a simple and lightweight notation syntax for getting simple music into `music21` (and from there, into the larger world).  It borrows from earlier simple notation solutions, especially Lilypond's syntax (but also ABC Notation and Humdrum/Kern).  I also tried to learn from their growth compared to more structured notation systems, such as MusicXML.  What I discovered is that the simpler a system is at inputting simple notes, the more complex that format is when dealing with really complex music. It's a major problem with simple solutions.\n",
    "\n",
    "TinyNotation tries to avoid this limitation by, I'm serious here, making more complex notation impossible!  Parsing TinyNotation should always be easy to do, because it is intentionally extremely limited.  However, as we will demonstrate below, we designed TinyNotation so it would be easy to subclass into NotSoTinyNotation dialects that will, we hope, make _your_ particular notational needs possible (and pretty simple).  Let's begin with the basics, and we'll start with examples.\n",
    "\n",
    "Here's a bunch of quarter notes in 4/4:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAq0AAABdCAYAAACPUV+bAAAACXBIWXMAAB7CAAAewgFu0HU+AAATY0lEQVR4nO3dfZRcdX3H8fdmN9lsEvIMaeQhNAkkInkoGhNNLJASIUIALRZ5kEIDeOhJD+X02ULTiiDWg3isYqikYHlSWxFiVQREDyootBEMJkASEk2qISEPJCHZTTa7/eM7tzM7e+/s3Oenz+ucObM7c++d796dufc7v/v7fX8gIiIiIkkaDSwH1gO9Lrce4FvA5LQCFBEREZFyWwbsxj1Zrb9tA05MJUoRERERKaXRwCM0l6zW3r6RRrAiIiIiUj7jgNX4T1h7gS6gPfmQRURERKRMhgEvECxhdW4TEo9aREREREplBeES1iNAW+JRZ1BL2gGIiIhIKUwAjsf6drYBe7DR8zvTDCoiZwJXuTw+Fjg35Lb3YJUE6i0HNoXctoiIiIhQntJOHyNca2qQ27sS+csyRM3NIiIiEodlwM1Y4uqlBTgPmAPMAzbHH1Ys1gCfd3n8o8CYENvdCzwIHHJ5bnuI7YqIiIiUnko7maOw/qhBW1IPAwsSj1okRVOBN4BL0w5EREQKT6Wdqk4lXMJ6UfIhZ9ugtAOQ2J2IHURmphyHiIgU2zDg+8DvBVx/CHa+Krs3gT8E/jPtQLJGSauIiIhE4bPArBDr9wA7IoolSw77WPYZYDawKqZYck0DsURERKJ1LDYafiwwGNgFvESxB87MxkbQh7EWfwleXjwBTAOmNFhmNfBJqn2BxYWSVhERkfBGA9cDl2NjCer1At+uLPNagnEl5boItrEygm1k0Q7gAqxKwkKsVm0P8DqwDvgusCG16EQy5CzsYHlb2oGIiBTUMmA3zQ2w2YaNNSiadYSrOboJG21fJM5ArHtTjqMw1KdVREQkGKe007/QuBZprQnA7bFFlI7BwMkh1u/G6pnuiyYcKSp1DxAREfFvHNZXMchI+fOAoUBnpBGlZzjBG8G6gUuAH0cXjhSVWlpFRET8iaK00/jowsktlXYSX5S0ioiI+BNFaafXI4olS7p9LKvSTuJbG7Akom0dDbwDu2QyBpu67C1gP7ATeBXrqC7Jcg6sU4nufy0i2XYIa82L2zFYeadR2PlkD7CRYh/rTyR8aactwDnhQ8mM4ZX7jdh74XcaLLsR+DrwU2BG5VZUkyr3x6PzbyRagOdDbmM8duAaVvm9G6uz1op1zm6pWfYQsBcr//BWyNeNUgf2dzhJ9mFsxF8L1u9oROX+t/j7JpkFI7EO8tuArSnHIiLxmoANCFqPtebFobXyOuPwnnLzTeDX2LScRXMCds4LYwvFamltxbpK7MXee6Owc88Q7FzaDRzE3hdFfE946cAa83Zi1RHEDAeOw45R612ePwZr/IzULOA57A35FvAZrHhurcHAhVhn9fryFj8Hzo86qICW0z++zrrftxL+QJUGlbwSKY+7sM/7XTFtX6Wd4AVU2qneaOxveyztQDJGJa/cLcL2y06P52/H4/MTtE/rImyk3xysNts7gb8CXqlb7jBWDmQR8GdYS6tjNvAo8FXSTwbd5jqubUHYB3yAYs9mIiLiRaWdqk4Nsa5KO4mEECRpXYLN6jEC+CVwOvByE+t9Afuw1rsYm76svpU2SY2aobuBi4BfJBSLiEiWjAOewmb08csp7VQkKu0kkhK/H77pwAPYZf89WAK7w8f6Xwc+5fL4sVj5kIkuz40C/hG4D5smrtXH6zXr+AbPXQc8HsNriohknUo79Rekr7BKO4kkbDCwlmrfgmsDbmcosBn3/gpP0XfgVjuwpm6ZewK+rpdB2KUat3huqSxzLPAdqoPN8kR9WkXKI+o+rSsI13/zCHbuKJIu7O9qdh/8hGL27a2lPq3u1KfVXSJ9WpcCb6/8vAFYGShUG+D0cY/nzgQuq/n9LPr3H7oSa32NynSsq0O9B4EbKz/fBCzGRo2KSP5MwS5vX4v1r/8wNnpVvL2d8KWd1mJjG4qkF/gVVrqpkdXAh4AFWEONiITU7DSuQ4C/r/n9WWzg1SisXMG38NdN4D+Az2G1XevdCNxf+dmrZXModrklCqe7PPY0cBV2cJoBXB3Ra4lIckYD1wOXY3WK6/Vi/fOvB15LMK68uDSCbQRt3Mi6A9hg4vOAhVgXM2fCgHXAd7HGHRFJgdOU63Xbh/X99ONzDbY3r7LMeOAN+l9qidJjddtfR3VgVgf2bdl5bnrEr50EdQ+QMipraaYouwd8H5V2ctMJvJR2EBmj7gHu1D3AXezdAwaauWMEcCd2omjWE0283hvYH/c49q31fuxyS1RGYl0SHNux0la7sYT1YYIPQBCR5Kk0U3TeE2JdlXYSkcg12z1gfpPL/TPwTeB/m1j2vxs89+6an38OnN3k6/u1lOpUhwewagibgHOBO4CTYnpdEYneOOzLcJAvmk5pps5II8o3lXYSkUxp9qDUaB7hWh30HUjVyOtYS6qbKU1uI4xWrC8bWF+ky7AZviYBq1DCKpInKs0UvSAJvEo7iUhsmk1a/cxYNdPHsrs9Ho98zlkXS7EEFeAG7JIiWN+2oC0MIpKOz2JTSwflDKKRqj1YP7JmPYMNTloVTzgiUnZtVGuRNuKnoP+sJrcJMNzj8aN8bCOIYVRLuTyP9WlzXm+S6xrmz/HuOJxVv1u5/33i3aeSPWOwL5zDsc/6fmArsDfNoGIwkvClmXZik5jk3ZzK/UzCf95HYpf699O4IWEbNkD2FeCakK+ZB23Y50rH0ypn1rOT0H6p5VRIOg3tl1pOXtKB+37x7JLahh2YBrIDK7DfjP1NbhO8i053+9hGEAuxnfUa1iWg9rUaTSAwgvzVHHT+nnbi3aeSDe3YF8dpeNcz3oyVdStK8hrFFNAvU4zPh9NHv9ljeyODsJbWh7ArUMdhx8Be4CCwC6tX6pQfLML+a1Yr5fp7B9JeuY/ifVckTg34wWi/1HLykhbc90u7y2O+XExzJU66ca+H6GW9x3ZeDBtwA3OxS4E/wxLXemd4xKSSV5J1ZS3zdBsqzeSIsuTVBqyLgPSlklf9qeSVO5W8chd7yauvYeWfBnInzRdUHoT3DFPrm9yGX0OxaWA3Y5UCDsb0OiJJKnuZp8Uh1lVpJhGRnPAz4Ogy4Mt4d8y/D5slq1lTqF7KqrfGx3b8uAM7WS/GarKK5N044ClsilK/nDJPeafSTCIiJeDnYN+Jzds9C/gM8D3gh1giewZwBdDlY3uNar8+WfPzLGxKvPXAV3Cf+rUZV2JTs34QGzAgkncq82SCXMJWaSYRkZxpdnKBWmuAv47gtRd5PP4G1t8UrBXpSaon1qlYC+0Cn681AvgSNkjs1gGW9Rq8AvAAfbsUrMUSeZE0qMyT+bXP5Z/Brhxtjj4UERGJS5CkNQpDsEuTbu7BLtuBjfKvbwmaj13i93OyPYCdqBbS/OxebsbQt0zXRGz0m59ahhKvqcAMbEKMduC32P9+S5pBxeB4wpd5Wkv+qmG4cb5IbsVGuHtZDXwS6/+rz6yISM6klbRegnuZgyPAiprfD3is73emlh6sZXcyA/fhm18XQ63z0ajRLBqNzW52Oe7VK3qBb1eWeS3BuOJ0RgTbWBnBNrLkQiyZX1i5d1qS12FdjJodJCoiIhmURtLagveAra/RN6l4EmsNOqXmsX+nWhfQjx6aO2nNbfDcRJS0Zs0y4GYaj5pvwVr25wDzKMZl4dNCrr+Z4iWtR7BW1EcGWlBERPInjelKLwXe4fL4YeCf6h7rwlo+PwHcjyUofxJrdHB2g+cWxvza0ryyl3k6K8S6KvMkIiK5k3RLawfWp8zN54FXXR7fAyyPLaK+ZmLVBbxcjVVO2JVMOOJhHPAEwUbNO2We/HYxyZqWgOupzJOIiORS0i2tN+E+C8+rwD8kG0o/pwCraJzIj68sMyGRiMSNyjyZ3QHWUZknERHJrSST1vfiXiqrCys/4zXoKm5/gQ3SeAGY1MTy87G+sd8APhJjXOJOZZ5MkDJPs7EvXSIiIrnTgs2mE7chwLuwEkT11pJuEjEd67ZwCLtk3Ikl0Aeplt4aXFlmOHZpub3y2G6yMainA6tFOwT7ItKFtap1YWW6ZmNJzsa0AoxIO/blJ4y3gOciiCVt07GBgV24f64c+4BfATuSCColzr54HqvFXGbTgLcBL2Pl3sKYhx3nfhQ2qII5HTs/FOE4EpU24H1Y17kXU44lS4YD7wa2YVVMxIzFGp8O495VbSpWAaafNuDu+OICLJH6O9xPrA9ipYjSdhw2yGoj1lVhN5awtmEngOlY3c9HCVa5IA7DgHOwiRbcuiv0Yq3Hz2JJ64vAVxOLLh7vI3zS+jDwWASxpO0aLFG7GSsfNw07EPRgieo2rNJFkZNVh7Mvvokl6GW2FDtmbQHuDbmtU4CjiP8ckTcLsHOE9kvVMOz4vBXtl1rHYUnrerRfas3AktYu3PfLZXgkrXFrB76DJVD1t79JIyAPy+kfX2fd71uBY9IKsM4y7KDptl/rb7sq97elEmm07qS5v9nrtgk7CRfB3djfNDvtQDJA+6LqLmxf3BXBtjYQbIrcoutEpQ/rjcbed0VoEIjSqdh+uTflOLJmEbZfdno8fzse5/E4qwd0YC0f9SWkjgDXAV+O8bX9GufyWG3L8D7gA8D2ZMLxNBp781/gY50x8YSSitNDrKsyTyIiIjkWV9J6NDbgY17d47uBi7FyRVnSKLHrBi4CfpFQLF7ClHmC9GY/i1LQqTdV5klERCTn4qgeMA3rR1mfsD6PDcbKWsIKjftOXAc8nlQgHsKWeQLr45Z3QS5VqsyTiIhIAUSdtP4B8FNgSs1jR4BPY6Wisjjv+yDgnR7P3Yr1lzsW65s7LKmg6kRR5unOiGJJk99BNirzJCIiUhBRJq03AN+j75SaLwHvAf4WK22QRdOxclH1HgRurPx8E7AYOCGpoGqcAHws5DbWkt3978fByv1ArcargQ9ho3w3xxmQiIiIh966ewkpin6Oo4CV2CVYx2GslfIWsp8suQ3ueRq4CnujzcCmb03LGRFsY2UE28iS87DyTnOwUmQ9WJWETcBPKEZXCBERybdXsLKEutoXkbBJ65nAPfSdSeq/gL/E/ll5UD8S/2XgQmyygQ7gK0Br0kHVODnk+pspXtLaA/ywchMREcmibtKfor5QgnYPGAP8KzY4yElYXwTOApaQn4R1JJZ4O7Zjpa12Ywnrw4Qb/BQFt3JczVKZJxERESmEIEnrJdh0ZNdg08BuBP4YOA1LYvNkKTZjF9jUrUuwS8znYkn4OSnFVetQwPVU5klEREQKw0/3gJOAL2IzGYAlq7cA92EJUt60AtdXfu7Bpg17Dms5XkU85cCC+GWAdd4ErkD9aERERKQgmknMOoBPAGuwhHUdlhBNw/qz5jFhBWtldbo23AA8Uvn5RLKTsAI8ir/L+yrzJCIiIoXTgl0Wb2Qw1iLbgyWoR+IOKgEt2DStLdjfVFvhYBB9p3Ct1Uk6pSsGYd0YWhosU6T/j5chWAt5F/b3lpn2RZX2RZVzvP4N4adwHlq57wy5naLpwN5nXWkHkjEd2PknaJc2KQ8nz+rF/fjiHMf6aQEmD7Dxo7GDV5HKCH0K+CNsdq4/pe+Jbi5Wo9XN+7FuEWloBWZiLdxjsH/2XmAbVg93e0pxJcn5vy0GXk05lrQ5+2IJVoe3zLQvqm4BPgI8RLXOdFA/wI41s8MGVTDrsIlOsjDmIUsuANajz6AMbAFWmWkP7pM7fRy7Gt5PGwPPUpXFWazCmAt8GOu/egHVgvWORhMIbCHd/bE+xdfOAqebxFaK9770S/uiSvuiam/lfh/h98Vh7At92fdpvV6sNVH7pa870g5AcsOZNdXr+PKm14pZ6ruZhKFYP9zNWKtMfcIqIiIiIhkUxYxYeXIHMAF4L+W4nC4iIiJSCGVKWq/EpmZ9P/mZ/EBEREREKE/SOgL4ErAfuHWAZUc1eO4B+nYpWAtcGy40ERERERlIWZLWA1j90oXA/BDbGQMMr/l9IlaBIY0yWCIikrxOVAZMJBVlSVp7sIkRJlOtPehlPrDC47nzsfJSIiJSTmfjb8IXEYlIWZJWsMR1QxPLzW3w3ESUtIqIlNnP0g5ApKzKVvKqGWc3eG5hYlGIiIiIyP9T0trXTOCDDZ6/GhibUCwiIiIiUqGkteoUYBWNu0yMrywzIZGIRERERASwBG1W2kGk7AqsH+tcmuvjOx+bduxZ4AngsfhCkzpOK/c0oDXNQDLA2Rcno+oV2hdV4yr3Ywl/bB+Cfc7Kfo4QkWhNrtx7HV+O9lqxBXg9johyZCjW4tyLDdZybr1UT4AtlWUG1fzcAnRjc1BLMo4COoBd2L4vM+2LKu2LqsHYieAlYGrIbY3FjnM7wwYlIlJjEPaluBfocnm+jXIVCpCCuht7k5+adiAZ4OyL2WkHkgHaF/F4GzAp7SBERBzKZEVExM1v0g5ARKSWBmKJiIiISOYpaRURERGRzFPSKiJ5d7juXkRECkh9WkUk724FngbWph2IiIjER0mriOTdFuChtIMQEZF4qXuAiIiIiGSeklYRERERyTwlrSL51Ft3LyIiUmjq0yqSTyuAbWjwkYiIlISSVpF8+p/KTUREpBTUPUBEREREMk9Jq4iIiIhknpJWEREREcm81rQDEPGhB+gA/g1N2SkiIlIq/wdIth1SuJZz5QAAAABJRU5ErkJggg==\n",
      "text/plain": [
       "<IPython.core.display.Image object>"
      ]
     },
     "metadata": {
      "image/png": {
       "height": 46,
       "width": 342
      }
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "s = converter.parse('tinyNotation: 4/4 C4 D4 E4 F4 G4 A4 B4 c4')\n",
    "s.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Notice that the last \"c\" is lowercase, while the rest of the notes are uppercase.  Case determines octave: \"C\" = the c in bass clef (C3) while \"c\" = middle C (C4).  Here are some other octaves:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<IPython.core.display.Image object>"
      ]
     },
     "metadata": {
      "image/png": {
       "height": 56,
       "width": 201
      }
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "s = converter.parse(\"tinyNotation: 3/4 CC4 C4 c4\")\n",
    "s.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<IPython.core.display.Image object>"
      ]
     },
     "metadata": {
      "image/png": {
       "height": 56,
       "width": 193
      }
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "s = converter.parse(\"tinyNotation: 3/4 c4 c'4 c''4\")\n",
    "s.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "And, yes, CCC is the C below CC, and c''' is the c above c''.  Remember when you use higher notes to make sure to enclose your string in double quotes, not single quotes.\n",
    "\n",
    "Typing all those \"4\"s for each of the quarter notes got tedious, so if the number for a duration is omitted, then the next note uses the previous note's duration:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAlwAAABdCAYAAABw37g8AAAACXBIWXMAAB7CAAAewgFu0HU+AAAV30lEQVR4nO3de5hcdX3H8ffsbu4hyZIgpLlwJwEliVUIJVRiABW5KWApghQLxeJDH8pTtY8WxIqCLQpaW8Snpahc6q2IWJFy8bG2AoWCIJgAMRdIIBdC7leS7PaP75xnZmfPOXvuv3NmPq/nOc/szpw557uzu2e+87t8fyAiIiJSXhOAa4HFQL/P1gf8BDjEVYAiIiIiVXYFsAH/RKt1Ww0c5CRKERERkQqaANxLtESreft3F8GKiIiIVM1E4GniJ1v9wC5gWPEhi4iIiFTHaOAZkiVb3tZbeNQiIiIiFXIr6ZKtvUB34VFHUHMdgIiIiDi3PzANGzvVA2zEZgW+kcO5LgXe5XP/vsBpKY+9EZux2KwPuDjlcUVEREQScVVu4V8DzpfXtifj+BPpcR2AiIiIFO4K4Dos6QpSA04HjgGOA5ZndO6HgS0+93+EdOOvNgN3A2+23N+X4pgiIiIisZW13MIsbPxV0las3cAJOccoEuowYB3wYdeBiIiIU2nLLQzPMbZLE8blJVvn5hhbJrpcByC5Owj7J5vlOA4REXFnNPAI8PaEzx9OePejK5uAc4Afug5kKEq4RERE2t9NwOwUz+8D1mcUS5idMfZ9FJgD3JdTLJnSoHkREZH8TMFm+e2LVUBfDzwPrC0whjnAx1IeYyHFzPb7OnA2cGjIPk8DX6AxFq0SlHCJiIhkawJwJXAhNo62VT/w0/o+SwuI5/IMjnFbBseIYikwE5sduQCrDdYHrAEWAT8DfldQLCKxnIz9c3/JdSAiIh3gCmAD0QZ7r8bG2eZtUcR4grZlwD45x+gNmv/znM/jjMZwiYiIpOeVW/g60QeX7w98JbeIGueYkeL5e7D6WH51syQGdSmKiIikMxF4iGQzAE8HRhJvsHgc00i+jN8e4Hzgf7ILp3OphUtERCS5LMotTMounMxUptxCVSjhEhERSS6LcgtrMoolzO4Y+1aq3EJV9ABnZHSs/YC3Yk2rvViJ/m3AVmy18ZewgYRSLO9CcBjZ/a5FRFx7C1ZyYTz2XrYRWEKx7zOHkL7cwgrgfRnEEsSbJfkUNkD/gJB9lwDfBx4Hjq5vRfHeq2bRpu9VNeDJlMeYhP3hj65/vwfLpLuxmiPNfcdvYotLvo4lY2UxCvs5vARxNzZboob1rY+t366iJKuOxzAOOAKbDbPScSwiIml0Y4PAJwIjAvbZBLyCLUWTtwOxxoY0VpBvC9cY4EjsffcVLEEdh3Vl9mPvaTuw162I1yzIJCwhfBmLtazegjUqbcZyglYHk8MSSLOBJ7Bf2DbgRgbPhBgGfAAbTNg6zfTXwJlZB5XQtQyOb2fL9yuxF7pqVBZCRNpBGcstvBAxHpflFt5ZP9etOZ8nraqUhfgaFue3Ax5/iYDfd9IxXKdgsxaOwep7vAP4JPBiy367sWmypwB/gbVweeYAPwa+i/tEZqLPfc2fnrYA76fYysAiIlLecgtdWO9BUiq30GGSJFxnYBVyxwK/BU7Esvyh/CP2x9XqPKxMf5o6IWn1hjy2B1uF/DcFxSIiImYi8HPgrATP9cot5KULlVuQGOImXDOBu7Cuwo1Y8hWnr/X7wA0+90/BptVO9nlsPPA54A5seYLuGOeLalrIY5cDD+ZwThERCaZyC9KxhmGLV3r9kZclPM5IYDn+fZw/Z+AnhhHAcy373J7wvEG6sCZdv3i+WN9nCnA/jYkBVaIxXCJSRbeSbnzUXux9Ky89NAadR43pVxQztqyZxnBlq5AxXJdgMx3AFo5MupDlTuAzAY+9G7ig6fuTgbe17HMx1uqVlZlY92iru4Gr619fA5wKTM/wvCIicR2Kda9dho2L/RAw1WlE+ZhJ+nILC4lXeyqpF7ByCmGeBs4GTsAaHKQDRV3aZzjwN03fP4YNkh8PLAZ+QryuxR8AX8V/Ou3VwJ31r4NalEZizbJZONHnvl8CH8Wy0qOxzFtExIUJwJXAhTRqKjXrx8bVXgksLTCuPJ2XwTGSNgrEtRWbBHY6sAAbouIVM10E/AxrpBCJ5BTCm0m3YGOd4vhqyPGOq+8zCVjH4CbZLD3QcvxFNAbRj8I+mXiPzcz43EVQl6JIdZWxFEIR7qf85Ra8LsXHcz5PWupSzFbuXYpDVcEdC9yCXRyieijC+dZhyd6D2CeEO7Fm2ayMw7oxPWux8g8bsGTrHpIP2BQRSaqspRCKckKK56rcgpRS1C7FeRH3+3vgR8CrEfb9v5DHjm36+tfAeyOeP65LaFSE3Y7NulwGnAbcDBye03lFRIJMxD6QJvmw55VC2JlpRMVLOhtd5RaktKK2cIWtvdRsFAMHvYdZg7Vg+Tk04jHS6MbGPID1t1+AVc4/EFuwU8mWiBStXUshxLU9wXNUbkFKLWrCFacS/KwY+wYtMhpWiDQrl2DJFcBVWPM92BiIpBX4RUTSuInGIr5JeIO1q259zP0fxQau35dDLCKZ6KFRaypMnObd2RGPCbaopp99YhwjidE0phw/iY198M53oO8zzF8Cb+QYVx4Ort++i3xfU5G89GIf+sZg16yt2Nqmm10GlYNe0pdCeAMrFF11vVjyuInwD+CrsYlULwJ/VkBczbwP5tMo97XVKyh+LOWOc0799izCi5G79gf127fj/3r6LRUI2MVrXIQTvI4V/4xia8RjQnBRuj0xjpHEAqz7cynWjdh8rrDipmMppq5LlryfZwT5vqYiWRqBfXibQXDdveVYCZd2Sbxaaw4m8QLt8X/ejc3s+jes12Eqdv3tB3ZgLWAv0ygP5OJn9hKubkfnj8pr2BhGueMc2XRb5ji9cd9Br2fqHrLziDYVdw/+dWKCLA44zrNpAw4xF/vk9L9Y0tVqfkBMKgshUoxOLYVwF+UvhVCU5yn/wH+VhciWykLUfQ8rkTCUW4he4K2L4MrtiyMeI66R2NJAy7EZiTtyOo+IxNfppRAWpHiuSiGIlFycpq8LgH/GMjU/d2DV56M6lEbTXKvnYhwnjpuxC/SpWM0tESmHidhaqmcleK5XCqHqknZFqBSCSAXE+Qffia3fNRu4EfhP4BdYEjYfuAjYFeN4YbW9Hm76eja2NMJirAnPbzmgKC7Gluv5IDbAUkTKQaUQTJLWKZVCEKmIqIVPmz0HfCqDc58ScP86bHwV2Kfeh2lcTA/DWsbiViEeC3wDG9B//RD7hi2MfRcDuyEXYkmoiCSnUghmFfFqED6K9TwszyUaEclUkoQrC8OxbgA/t2NN5GBjGlo/uc7DugXjXGC3YxenBUSvmu+nl4GlLCYDNYK7WaU9HYYtan4ANptuFfb3tcJlUBU1nfSlEBZSvdnDfrwegmU0yrn4eRr4AjbeTdcekYpwlXCdj/90yr0MnEkRVG047uyVPqxF7RCGHusxj+DZHGdis2ek80zAVia4EP+ZuP3AT+v7LC0wrqo7KYNj3JbBMcrkWKwVfwFWj8hrwVuEDa+IOjFJRErERcJVI3hw/fcY+Gb1MPbp9aim+75Do/ZKHH1Eu1DNDXlsMkq4OtEVwHWEz5yrYa22xwDHoW6eqN6Z8vnLab+Eaw/WenXvUDuKSHW4WMLmw8Bbfe7fDfxty327sBanzwN3Ym98f5prdOELZaeZti3V0+llCopwcornqhSCiFRG0S1co7CxB37+ASsY1mojcG1uEQ00C5vFGORSbIZm3HW+pHomAg+RbOacV6ag7IUbq0ylEESqqQsbmz0V6zKfWt/m1x9/h5uw8ld0wnUN/lWhXwI+W2wogxyFLXwa9ppMqu9zDu0xK0r8eWUKks6c88oUrMwsova1McFzNmFlaLRQsUi5dGPrnk5t2qa1fD+F4BqcELzGcuUVmXAdj385iV3Y1OagAfJ5+yusW+Mkgtd2bDYPGwv2IPAD4Lv5hSaOqExBcVZgg8SjUikEETd6sJnZUwlOqH4Pd5PxSq+GVXfO23BscOwIn8cW4vbNaSbW1fkm1gW0E0v+dtAoTzGsvs8YrKtoRP2+DZTjwj8KqzU2HGuu3YW1AuzCSlnMAV4BlrgKsEJG0lgNPqlt2KLoMrSjsHFvOwmfQbwFW6z49SKCcmQO9v/63zSuPZ3qWOy69l+uAwlRw7rBNgNPuQ0l1D7Y++9rBBf9rmHva63byKavh9f3y9saLC8oq8Ox5HI1NnO41XH4r9NMD/Av+cUF2C/p0/gnW3djU+ldm4oNiF+CdW9uwC54PVjGPhPL7H9MshmSeRgNvA+bPr6/z+P9wDPAY9iF/FnUGhfFH5I+4boHeCCDWDrBx7G/32uxcXMzgH2xVsIt2EXtedo70fJ8Bku4voO7Fv+yOBx778j7/SmNbizhWku54zwCS7hWYYnMvvVtYtPX4ykmmYpiCeV+PS/CcobF+Md5JAEJV95GAPfjv3L2X7sIKMC1DI5vZ8v3K7G+6TK4AksKfVckb9nW12+/5CTS6vkm0V7XoG0Z9olSorkTe91mug6kBB7GXouoM2Lb2fOUf9JJD/b7etxhDKOwuoDzsRqBnwb+CWsceAprLUpzPXOx3Z3lC5SDr2Fxfjvg8ZcI+Nny7GsdBfyIwWUW9gKXY2swlsVEn/uaW+S2AO/H/YLXE4BvEW+B3958QmlbJ6Z4rsoUiEhWxjB4vFTrmCm/9y4pqbwSrv2wGUTHtdy/ATgPm25fJmFJyR7gXOA3BcUSJE2ZAtBAxqiSLpWiMgUiEtU4/JOp5oSqXVs6X8d6jLxtRf12NjaJ7TF3oeUrjzfhGdi4rNZFWJ8E/phyLnsyLeSxy7EZiS6lLVMAWucvKpUpEJGkath4KL9yCM2b39J2VdePdWGu9Nm8pOo1gruKvV6ldlgX1VfWCddJwA8ZmJnvBb6M1eAq4wvZRXChteuxQXFTsC7Qc3EzmDWLMgW3ZBRLu3uFwS2zYVSmQKQz1LAB5l7SNL1+/6HY+Dvv/nasI9WHDbr3S6a8hGoVNttfAmSZcF2FVWHvbrrveWwpniczPE/WZmIlFVrdDVxd//oa4FTsH+yFguLyTAc+lvIYCylnsltGO+q3Kwhv+XwaWzXhXpJ3Q4pIOTRXPw8bM+VXumQS2SzC7sperOWpuSWqdVtNPu8hzUnsrPp904N3r7YsEq7x2OKx5zTdtxtrHfoi5X+j9xsk/Uvgo9gb6dHYkj6uzM/gGO22uG8RTscuBMdgJUH6sBmfy4BfoS5akarowkqPhI2ZGqr6eVXtBtYBk7GC3fcyOKlagyVdWQtLYpsT2dYk9qAcYimFtAnXu4HbgQOb7vsP4BMEF1grm9YZfy8AH8CaRkdhUz+7W59UoCNSPn85SriS6AN+Ud9EpJy6sQ9EYeOlptCek4Z2ET5eaiU2QP33sV6mR4BPZnRuvyV8WhOpdk1iE0v6R9gL/B3W8uMVS3sWm2HwSAZxFWUcljR61mLlHzZgydY9JJ8VmJU0035VpkBEqmw6wWvyTcVablx+IM7LDoK797yk6g3yGc6gJXxykuQFOx+4mUZ18yXA57EChn0ZxVWUS2hk4NuBM7Auo9Own/FwR3E1SzoIUWUKRKSqDsZmrb3sOpAcbMMSprCEyitsnbVhWLIUlkxNxroDXWnbVSXiJFyHYxVsT6l/vwQbo3UH1Vz3qxu4sv51HzbT7Amse/Q+3P7BNfttgueoTIGIVFlVW602Edy9522bySeZGoF147UmU0fXH/8IcBnlWcIniN/6hG0hSsI1Clsu4FPYL3QRcAM2iy+PgXZFuYTG2LOrsMGEYAP2ypJsgS3R8GWiLxejMgUiItlbz8DE6TXgc9i43w8Cr5Lf8I3RDE6mWrtY94twDHGoxtB1pYZhiVkf1pJV5STL462MXsN+puaZlF34L7QNjfUVi9bF0Cu1t9Pvx6Xh2KfrXVSvi7yKvNfb1f9WmYzA/tf1WhS/+G+UNf78jMKuE7tSnr8WYWtHfq9zH+W+9no50V78h/yMJOD3VQMOGeLg+9UP0E7T4G8A/ghbKufjDPzlziV48cz3YF2pLnRjdUpmYJMW+rGm6dVYvTPX6zy2ixuBs7G6ay85jqUT3ITNFHb5v1UWdwDHYxN1NjuOxbVFZDfDbR12nVxV31Y3bauwsghJEqZu7BrxDAPLInlqWI3HA7BxUc23zV+362L362m8xqt9vl6Dm0LiaX0W+BNsrehP+Dz+CAGlLXoYeqmdMi7Fk8Zc4EPYeK2zaBS69IQVXVuB29djscNzdwqvS2Al7fe3X0Zb67eu/7fKwLsWLSfZElPtJEoLXz8Dq5/7jZd6jXyqn9dodOGNAk7GfxalX1HtdrCa4AH/K7Hu1aAlfKpuU/12C/7XrMDao502rXMkVjdsOTYjsTXZEhER97zupccJHoSeZ/Xz1oKdfsmU1+05A/hmDnG4oCV8ctRpCZdXzuJ41AUnIlJWS4DDsGt1lroYWLDTL5GaQvA43irbi7U8hSVTq6lm1YFK6KSE62JsuZ73UJ0q+CIiEo1XdT4okWrnqvO7CU+kVmKNDJpU5VA7/uH5GQt8Axsvcv0Q+44PeewuBnZDLsTqmoiISH6GYYPMw5Kpdq06v5Ohk6l1lHtmn9A5Cdd2rD7VAmBeiuP0AmOavp+M9fd3+hRuEZEs7YclWU9gydQBtGdphO0EV5z37l+P3mPaQqckXH1YhfxDGLwyeat5wK0Bj52JlWAQEZH8jMfGWx3jOpAUNjP04tKbUDLVMTol4QJLun4XYb+5IY9NRgmXiEin20B4MvUqqqUmLTop4YrqvSGPLcCKpYqIZKWGLbviFfpsx3FIVbKOoZOpbc6ik8pSwjXQLGxNrCCXYpXI1xcTjoiUVA9WIXwfYFzT161b0GPN949l4PqtY4E3ivghSmwzQ68NmMQawrv4XkP1GSUnSrgajgLuI/w1mVTf5xzsH1dEqqGGFarMKkkaaiyopLOWeAlXa9V5v8rzeVWdF4mkB5jtOgjHLsLGbc0lWgI6Dyvn/xjWvfhAfqGJA/vWb2egrp0i9NZvZzK42GQXNit4DNblNrZ+O6bp1u+x1se977uohiOBCa6DcKw5oe3DErC12Addbx0+b1uLdQOGFewcT3jJH5GoJtVve/HPnwKL5tZQS81I7ELcvEp5HwNXiK/V9+lq+rqG/YPrE1N7GYf9TaxHFZeL0ItN/9+N/U+1bp1INZVsPFs/Vqiz018LKZdh2IfxvfgvLTWCzr12icTyLexC/zbHcXSKZTQ+3GizrdNbt0TaUlWa2EVEREQqS4PmRUTc2QZsqW+b67fqyhZpQ0q4RMSlpcBBroOIYQ+NBKk5SfLbgh7z7t+GFhMW6RhKuETEpVUFnGM72SVJu9BSLCKSgBIuESmbvURPhIZKkraiViQRKQElXCLi0nXAVxiYJO1ErUgi0maUcImISy+6DkBEpAgqCyEiIiKSMyVcIiIiIjlTwiUiIiKSMyVcIiIiIjlTwiUiIiKSMyVcIiIiIjlTwiUiIiKSs27XAYiUTB8wArgNLSIsIiIZ+X8bVtImmr3VigAAAABJRU5ErkJggg==\n",
      "text/plain": [
       "<IPython.core.display.Image object>"
      ]
     },
     "metadata": {
      "image/png": {
       "height": 46,
       "width": 302
      }
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "s = converter.parse('tinyNotation: 4/4 C4 D E8 F G16 A B c')\n",
    "s.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Periods signify dots, \"r\" is for a rest, and \"~\" indicates a tie:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<IPython.core.display.Image object>"
      ]
     },
     "metadata": {
      "image/png": {
       "height": 49,
       "width": 245
      }
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "s = converter.parse('tinyNotation: 4/4 C.4 D8~ D8 r c4')\n",
    "s.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Sharps, flats, and, if desired for clarity, naturals are indicated with `#`, `-` (not `b`) and, `n`, respectively:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<IPython.core.display.Image object>"
      ]
     },
     "metadata": {
      "image/png": {
       "height": 56,
       "width": 748
      }
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "s = converter.parse('tinyNotation: 4/4 c4 c# c c## cn c- c-- c c1')\n",
    "s.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "A lyric syllable is specified by appending it after the note with an underscore:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<IPython.core.display.Image object>"
      ]
     },
     "metadata": {
      "image/png": {
       "height": 69,
       "width": 224
      }
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "s = converter.parse('tinyNotation: 4/4 c4 d2_Dee e4')\n",
    "s.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "And, finally, triplets are possible by enclosing the triplet notes in curly brackets along with a special `trip` prefix:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<IPython.core.display.Image object>"
      ]
     },
     "metadata": {
      "image/png": {
       "height": 57,
       "width": 356
      }
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "s = converter.parse('tinyNotation: 4/4 c4 trip{c8 d e} trip{f4 g a} b-1')\n",
    "s.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Okay -- so what if you want to do something more complex?  Apply an id to a note with the \"=\" tag, and then make changes to it using music21:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<IPython.core.display.Image object>"
      ]
     },
     "metadata": {
      "image/png": {
       "height": 50,
       "width": 252
      }
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "s = converter.parse('tinyNotation: 4/4 c4 d=id2 e f')\n",
    "n = s.recurse().getElementById('id2')\n",
    "ch = chord.Chord('D4 F#4 A4')\n",
    "ch.style.color = 'pink'\n",
    "n.activeSite.replace(n, ch)\n",
    "s.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "collapsed": true
   },
   "source": [
    "And that's how I use TinyNotation, about 90% of the time.  But when I need to, I can make something more complex..."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Expanding TinyNotation through new Tokens, Modifiers, and States\n",
    "\n",
    "In order to keep TinyNotation tiny, there's a lot not included in it.  So many people have said to me over the years, \"TinyNotation is almost perfect for what I need, but it just has to include one more thing...\" If that \"one more thing\" were the same for everyone, it'd be no problem to add! But everyone has a different \"one more thing\" and if all the dozens of \"one more things\" were added, tinyNotation wouldn't be tiny anymore.\n",
    "\n",
    "So instead, we've made it easy to expand TinyNotation through creating new Tokens (like the Notes, Rests, and TimeSignatures from above, separated by spaces), new Modifiers (such as the = for assigning .id, or the _ for assigning a lyric), and new States (such as the triplet state enclosed in curly brackets).\n",
    "\n",
    "The first thing that we'll need to know in order to expand TinyNotation is how to get at the TinyNotation :class:`~music21.tinyNotation.Converter` itself (which is different from the basic `converter.parse()` call).  It's found in the `tinyNotation` module, and is called with a set of music to parse."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [],
   "source": [
    "tnc = tinyNotation.Converter('6/8 e4. d8 c# d e2.')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "We run the converter by calling `.parse()` on it and then there will be a `Stream` (generally a `stream.Part` object) in the `.stream` attribute of the `Converter`."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<IPython.core.display.Image object>"
      ]
     },
     "metadata": {
      "image/png": {
       "height": 56,
       "width": 322
      }
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "tnc.parse()\n",
    "s = tnc.stream\n",
    "s.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Now that we have a basic idea of how we can get a converter, we can start hacking it. \n",
    "\n",
    "### Adding new tokens\n",
    "\n",
    "TinyNotation does not have a way of specifying the Key (and thereby the KeySignature) of a piece or region.  Let's add that \"one more thing\" with a new :class:`~music21.tinyNotation.Token`:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [],
   "source": [
    "class KeyToken(tinyNotation.Token):\n",
    "    def parse(self, parent):\n",
    "        keyName = self.token\n",
    "        return key.Key(keyName)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "The `KeyToken` is a subclass of the `tinyNotation.Token` class.  When it is parsed, `.parse()` is called and it is passed a reference to the `Converter` object, and important information is stored in the `self.token` attribute.  The Converter calling `parse()` expects that a :class:`~music21.base.Music21Object` or `None` will be returned.  Here we're going to return a :class:`~music21.key.Key` object.\n",
    "\n",
    "Now that we've defined this particular Token, we'll need to teach the `Converter` when to call it.  We'll say that any token (that is, data separated by spaces) which begins with a `k` is a new `Key` object, and that the relevant data is everything after the `k`.  And we'll add this to a blank `Converter` object."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [],
   "source": [
    "tnc = tinyNotation.Converter()\n",
    "keyMapping = (r'k(.*)', KeyToken)\n",
    "tnc.tokenMap.append(keyMapping)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Next, let's create a fragment of TinyNotation to see if this works, using the `load()` method:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<IPython.core.display.Image object>"
      ]
     },
     "metadata": {
      "image/png": {
       "height": 41,
       "width": 317
      }
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "tnc.load('4/4 kE- G1 kf# A1')\n",
    "tnc.parse()\n",
    "s = tnc.stream\n",
    "s.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Modifying the behavior of existing tokens\n",
    "\n",
    "Now that we have a way to create totally new Tokens, let's look at ways we can modify existing tokens.  Let's first create a simple :class:`~music21.tinyNotation.Modifier` that changes the color of individual notes after they've been parsed:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [],
   "source": [
    "class ColorModifier(tinyNotation.Modifier):\n",
    "    def postParse(self, m21Obj):\n",
    "        m21Obj.style.color = self.modifierData\n",
    "        return m21Obj"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Now we'll modify our `Converter` object to make it so that the ColorModifier is run anytime that a color name is put in angle brackets after a Token, and then test it on a simple stream."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<IPython.core.display.Image object>"
      ]
     },
     "metadata": {
      "image/png": {
       "height": 50,
       "width": 211
      }
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "tnc.modifierAngle = ColorModifier\n",
    "tnc.load('3/4 c4<red> d<green> e-<blue>')\n",
    "tnc.parse()\n",
    "tnc.stream.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "There are six modifiers that can be used.  We've seen the `=data` (`modifierEquals`) and `_data` (`modifierUnderscore`) modifiers already, which don't take a closing tag, and we can add to them the `<data>` (`modifierAngle`) tag we just demonstrated, along with `*data*` (`modifierStar`), `[data]` (`modifierSquare`) and `(data)` (`modifierParens`) tags, which have a meaning ready for you to create.\n",
    "\n",
    "Here's a less silly modifier which replaces the `Note` object that comes in with a :class:`~music21.harmony.ChordSymbol` object that combines the root name from the Note with the `data` from the modifier:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "{0.0} <music21.stream.Measure 1 offset=0.0>\n",
      "    {0.0} <music21.clef.BassClef>\n",
      "    {0.0} <music21.meter.TimeSignature 4/4>\n",
      "    {0.0} <music21.harmony.ChordSymbol Cmaj7>\n",
      "    {2.0} <music21.harmony.ChordSymbol Dm>\n",
      "    {3.0} <music21.harmony.ChordSymbol E-sus4>\n",
      "    {4.0} <music21.bar.Barline type=final>\n"
     ]
    }
   ],
   "source": [
    "class HarmonyModifier(tinyNotation.Modifier):\n",
    "    def postParse(self, n):\n",
    "        cs = harmony.ChordSymbol(n.pitch.name + self.modifierData)\n",
    "        cs.duration = n.duration\n",
    "        return cs\n",
    "    \n",
    "tnc.modifierUnderscore = HarmonyModifier\n",
    "tnc.load('4/4 C2_maj7 D4_m E-_sus4')\n",
    "tnc.parse().stream.show('text')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "If we leave in the bass note and instead add the ChordSymbol to the stream, then we'll be able to see it on the score:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<IPython.core.display.Image object>"
      ]
     },
     "metadata": {
      "image/png": {
       "height": 68,
       "width": 316
      }
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "class HarmonyModifier(tinyNotation.Modifier):\n",
    "    def postParse(self, n):\n",
    "        cs = harmony.ChordSymbol(n.pitch.name + self.modifierData)\n",
    "        self.parent().stream.append(cs)\n",
    "        return n\n",
    "    \n",
    "tnc.modifierUnderscore = HarmonyModifier\n",
    "tnc.load('4/4 C2_maj7 D4_m E-_sus4')\n",
    "tnc.parse().stream.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Defining a State for a set of tokens\n",
    "\n",
    "Lastly are `State` conditions.  These affect more than one Token at a time and are (generally) enclosed in curly brackets (the \"TieState\" is a State that works differently but is too advanced to discuss here).  Let's create a silly State first, that removes stems from notes when it's closed:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "class NoStemState(tinyNotation.State):\n",
    "    def end(self):\n",
    "        for n in self.affectedTokens:\n",
    "            n.stemDirection = 'none'"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Every State token has the following methods called: `start()`, which is called when the state is begun, `affectTokenBeforeParse(tokenStr)` which gives the `State` object the opportunity to change the string representation of the token before it is parsed, `affectTokenAfterParseBeforeModifier(music21object)` which lets the music21 object be changed before the modifiers are applied, `affectTokenAfterParse(music21object)` which lets the state change the music21 object after all modifiers are applied, and `end()` which lets any object in the `.affectedToken` list be changed after it has been appended to the Stream.  Often `end()` is all you will need to set."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Now we'll define `\"nostem\"` to be the start of a stemless state.  We do this by adding the term \"nostem\" to the `bracketStateMapping` dictionary on TinyNotationConverter."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\nYII=\n",
      "text/plain": [
       "<IPython.core.display.Image object>"
      ]
     },
     "metadata": {
      "image/png": {
       "height": 50,
       "width": 748
      }
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "tnc.bracketStateMapping['nostem'] = NoStemState\n",
    "tnc.load(\"4/4 c4 d nostem{e f g2 a4} b c'1\")\n",
    "tnc.parse().stream.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Okay, that's a good amount of fun and games, but here's what some people really want: using State to create chords.  To do this, we will prevent notes from being added to the stream as they are parsed, and then put a Chord into the stream at the end:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\nQmCC\n",
      "text/plain": [
       "<IPython.core.display.Image object>"
      ]
     },
     "metadata": {
      "image/png": {
       "height": 62,
       "width": 295
      }
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "class ChordState(tinyNotation.State):\n",
    "    def affectTokenAfterParse(self, n):\n",
    "       super(ChordState, self).affectTokenAfterParse(n)\n",
    "       return None # do not append Note object\n",
    "\n",
    "    def end(self):\n",
    "        ch = chord.Chord(self.affectedTokens)\n",
    "        ch.duration = self.affectedTokens[0].duration\n",
    "        return ch\n",
    "    \n",
    "tnc.bracketStateMapping['chord'] = ChordState\n",
    "tnc.load(\"2/4 C4 chord{C4 e g} F.4 chord{D8 F# A}\")\n",
    "tnc.parse().stream.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "sphinx_links": {
     "any": true
    }
   },
   "source": [
    "That's a long enough chapter on a tiny enough concept.  We'll move on to how Streams and other objects are related to their prior incarnations though :ref:`Chapter 17, Derivations <usersGuide_17_derivations>`."
   ]
  }
 ],
 "metadata": {
  "anaconda-cloud": {},
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.2"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 1
}
